package com.zm.schedule.schedulemgr.service;

import java.util.List;

import com.zm.base.core.exception.BaseException;
import com.zm.schedule.schedulemgr.po.TbZmScheduleJob;

/**
 * @author chenhuaming
 * @Time：2017年5月2日 上午11:35:28
 * @version 1.0
 */
public interface ISchedulerBuilder {
	/**
	 * 初始化job
	 * @author chenhuaming
	 * @Time 2017年5月12日
	 * @param jobList
	 * @throws BaseException
	 * @throws Exception
	 */
	public void createScheduler(List<TbZmScheduleJob> jobList) throws BaseException,Exception;
	/**
	 * 新增job
	 * @author chenhuaming
	 * @Time 2017年5月12日
	 * @param job
	 * @throws BaseException
	 * @throws Exception
	 */
	public  void addCronTriggerJob(TbZmScheduleJob job) throws BaseException, Exception;
	/**
	 * 修改job
	 * @author chenhuaming
	 * @Time 2017年5月12日
	 * @param scheduleJob
	 * @throws BaseException
	 * @throws Exception
	 */
	public void upateJob(TbZmScheduleJob scheduleJob)throws BaseException,Exception;
	/**
	 * 删除job
	 * @author chenhuaming
	 * @Time 2017年5月12日
	 * @param scheduleJob
	 * @throws BaseException
	 * @throws Exception
	 */
	public void delJob(TbZmScheduleJob scheduleJob)throws BaseException,Exception;
	/**
	 * 暂停job
	 * @author chenhuaming
	 * @Time 2017年5月12日
	 * @param scheduleJob
	 * @throws BaseException
	 * @throws Exception
	 */
	public void pauseJob(TbZmScheduleJob scheduleJob)throws BaseException,Exception;
	/**
	 * 获取韧度调度的状态
	 * getTriggerStatusByJobName:() 
	 * @author chenhuaming 
	 * @param jobName
	 * @return
	 * @throws SchedulerException
	 */
	public String getTriggerStatusByJobName(TbZmScheduleJob scheduleJob)
		    throws BaseException,Exception;
	/**
	 * 恢复任务
	 * recoverJob:() 
	 * @author chenhuaming 
	 * @param scheduleJob
	 * @throws BaseException
	 * @throws Exception
	 */
	public void recoverJob(TbZmScheduleJob scheduleJob)throws BaseException,Exception;
	/**
	 * 停止任务
	 * stopJob:() 
	 * @author chenhuaming 
	 * @param scheduleJob
	 * @throws BaseException
	 * @throws Exception
	 */
	public void stopJob(TbZmScheduleJob scheduleJob)throws BaseException,Exception;
}
